/*
moxl - Modular XML Library
Copyright (c) 2007, Malcolm Sparks

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
*/
package moxl.xpath.parser.states;

import moxl.tokenizer.State;
import moxl.tokenizer.Token;
import moxl.tokenizer.TokenStream;
import moxl.tokenizer.TokenizerException;
import moxl.xpath.parser.XPathParser;
import moxl.xpath.parser.XPathParserException;
import moxl.xpath.parser.types.NonTerminal;

public class XPathParserState implements State
{
	public boolean isStartState()
    {
	    return false;
    }

	public boolean isFinishState()
    {
	    return false;
    }

	public void acceptAxisName(XPathParser ctx, TokenStream tstream, Token token, NonTerminal nonTerminal) throws XPathParserException
	{
		throw new XPathParserStateException(this, token);
	}

	public void acceptDoubleColon(XPathParser ctx, TokenStream tstream, Token token, NonTerminal nonTerminal) throws XPathParserException
	{
		throw new XPathParserStateException(this, token);
	}

	public void acceptNameTest(XPathParser ctx, TokenStream tstream, Token token, NonTerminal nonTerminal) throws XPathParserException
	{
		throw new XPathParserStateException(this, token);
	}

	public void acceptOperator(XPathParser ctx, TokenStream tstream, Token token, NonTerminal nonTerminal) throws XPathParserException
	{
		throw new XPathParserStateException(this, token);
	}

	public void acceptOpenBracket(XPathParser ctx, TokenStream tstream, Token token, NonTerminal nonTerminal) throws XPathParserException
	{
		throw new XPathParserStateException(this, token);
	}

	public void acceptCloseBracket(XPathParser ctx, TokenStream tstream, Token token, NonTerminal nonTerminal) throws XPathParserException
	{
		throw new XPathParserStateException(this, token);
	}

	public void acceptOpenParenthesis(XPathParser ctx, TokenStream tstream, Token token, NonTerminal nonTerminal) throws XPathParserException
	{
		throw new XPathParserStateException(this, token);
	}

	public void acceptCloseParenthesis(XPathParser ctx, TokenStream tstream, Token token, NonTerminal nonTerminal) throws XPathParserException
	{
		throw new XPathParserStateException(this, token);
	}

	public void acceptAtSymbol(XPathParser ctx, TokenStream tstream, Token token, NonTerminal nonTerminal) throws XPathParserException
	{
		throw new XPathParserStateException(this, token);
	}

	public void acceptComma(XPathParser ctx, TokenStream tstream, Token token, NonTerminal nonTerminal) throws XPathParserException
	{
		throw new XPathParserStateException(this, token);
	}

	public void acceptLiteral(XPathParser ctx, TokenStream tstream, Token token, NonTerminal nonTerminal) throws XPathParserException
	{
		throw new XPathParserStateException(this, token);
	}

	public void acceptNumber(XPathParser ctx, TokenStream tstream, Token token, NonTerminal nonTerminal) throws XPathParserException
	{
		throw new XPathParserStateException(this, token);
	}

	public void acceptFunctionName(XPathParser ctx, TokenStream tstream, Token token, NonTerminal nonTerminal) throws XPathParserException
	{
		throw new XPathParserStateException(this, token);
	}

	public void acceptVariableReference(XPathParser parser, TokenStream tstream, Token token, NonTerminal nonTerminal) throws XPathParserException
	{
		throw new XPathParserStateException(this, token);
	}

	public void acceptNodeType(XPathParser parser, TokenStream tstream, Token token, NonTerminal nonTerminal) throws XPathParserException
    {
		throw new XPathParserStateException(this, token);
    }

	protected Token lookahead(TokenStream tstream, int amount) throws XPathParserException
	{
		try
		{
			return tstream.lookahead(amount);
		}
		catch (TokenizerException e)
		{
			throw new XPathParserException("Failure on lookahead(" + amount + ")", e);
		}

	}

	protected Token read(TokenStream tstream) throws XPathParserException
	{
		try
		{
			return tstream.read();
		}
		catch (TokenizerException e)
		{
			throw new XPathParserException("Failed to read next token", e);
		}
	}

}
